FROM python:3.10-slim

# 设置工作目录
WORKDIR /app

# 安装系统依赖
RUN apt-get update && apt-get install -y \
    gcc \
    libc-dev \
    && rm -rf /var/lib/apt/lists/*

# 安装uv工具（系统级别）
RUN pip install --no-cache-dir uv

# 复制依赖配置文件
COPY pyproject.toml uv.lock ./

# 复制项目源代码
COPY . .

# 创建虚拟环境并使用uv sync安装依赖
RUN uv venv && \
    uv sync --python /app/.venv/bin/python

# 暴露端口
EXPOSE 5000

# 设置环境变量
ENV PATH="/app/.venv/bin:$PATH"
ENV FLASK_APP=app.py
ENV FLASK_ENV=production

# 使用Gunicorn启动应用
# -w 4: 4个工作进程
# -b 0.0.0.0:5000: 绑定到所有网络接口的5000端口
# --timeout 120: 设置请求超时时间为120秒
# --keep-alive 5: 设置keep-alive时间为5秒
# --max-requests 1000: 每1000个请求后重启worker，防止内存泄漏
# --max-requests-jitter 100: 随机化重启，避免所有worker同时重启
CMD ["gunicorn", "-w", "4", "-b", "0.0.0.0:5000", "--timeout", "120", "--keep-alive", "5", "--max-requests", "1000", "--max-requests-jitter", "100", "app:app"]